package artesis.sysanalyse.klasses;

import artesis.sysanalyse.abstracteKlasses.Plaats;

/**
 * Een plaats voor een VIP
 * 
 * @author Ruben Van Laerhoven
 * @since 2011 05 10
 * @version 2011 05 15
 */
public class VipPlaats extends Plaats {
    
    // zie statussen VipPlaatsFSM
    public static final int NIET_GERESERVEERD = 1;
    public static final int GERESERVEERD = 2;
    public static final int BEEINDIGD = 3;

    public VipPlaats(Optreden optreden, char categorie) {
        super(optreden);
        this.set_categorie(categorie);
        this._status = NIET_GERESERVEERD;
    }
    
    public char get_categorie() {
        return _categorie;
    }
    public final void set_categorie(char categorie) {
        char invoer =  Character.toUpperCase(categorie);
        if (invoer >= 'A' && invoer <= 'C') {
            this._categorie = categorie;
        }
        else {
            throw new IllegalArgumentException("Categorie moet tussen A en C liggen");
        }
    }
    
    public int get_status() {
        if (get_reservatieId() > 0) {
            this.set_status(GERESERVEERD);
        }
        else {
            this.set_status(NIET_GERESERVEERD);
        }
        return this._status;
    }
    // status wordt opgehaald uit superklasse Plaats (zie ook in getter)
    private void set_status(int status) {
        if (status == NIET_GERESERVEERD || status == GERESERVEERD) {
            this._status = status;
        }
        else {
            throw new IllegalArgumentException("Geen gekende vipPlaatsStatus!");
        }
    }
    
    public void beeindigen() {
        set_status(BEEINDIGD);
    }
    
    private char _categorie;
    private int _status;
}
